{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "24c37af7-845e-4934-aaa5-72321618e99d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from autograd import grad\n",
    "# from autograd import elementwise_grad as egrad  # for functions that vectorize over inputs\n",
    "# %matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebe15a33-9000-4a99-b8b1-0a73486ea6b5",
   "metadata": {},
   "source": [
    "神经网络中用的函数的定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f3e15acd-159a-42ee-8caf-dc07062bdf3a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def fmorse(x,p=[1.0,1.0,2.0,0.0]):\n",
    "    ro,De,alpha,e0 = p\n",
    "    r_ = x - ro\n",
    "    return De*(np.exp(-2.0*alpha*r_)-2.0*np.exp(-alpha*r_)) + e0\n",
    "def sigmoid(x):\n",
    "    return 1.0/(1.0+np.exp(-x))\n",
    "\n",
    "def sigmoid_p(x):\n",
    "    return sigmoid(x)*(1.0-sigmoid(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "3fb011ea-51e6-4655-9f00-585f4def4fcb",
   "metadata": {},
   "outputs": [],
   "source": [
    "X  = np.linspace(0.6,3.0,50)  # 产生一向量，做为输入数据\n",
    "Y  = fmorse(X)\n",
    "X_ = X.copy()\n",
    "\n",
    "X = np.expand_dims(X,axis=1)\n",
    "X = np.expand_dims(X,axis=2)  # 扩维，方便后续计算\n",
    "\n",
    "Y_= fmorse(X)\n",
    "# print(Y_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f17527aa-8acf-49c7-bee0-434210ac054c",
   "metadata": {},
   "source": [
    "神经网络权重和偏置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "fc86de39-e869-4773-b49e-88e074c2a3c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "w1 = np.random.normal(loc=0.1, scale=0.3, size=(10,1))\n",
    "b1 = np.random.normal(loc=0.1, scale=0.3, size=(10,1))\n",
    "w2 = np.random.normal(loc=0.1, scale=0.3, size=(10, 10))\n",
    "b2 = np.random.normal(loc=0.1, scale=0.3, size=(10,1))\n",
    "w3 = np.random.normal(loc=0.1, scale=0.3, size=(1, 10))\n",
    "b3 = np.random.normal(loc=0.1, scale=0.3, size=(1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "243ac2ad-19fa-49ef-9dbd-e6e41f32e35a",
   "metadata": {},
   "outputs": [],
   "source": [
    "a1  = np.matmul(w1,X)  + b1\n",
    "a2  = np.matmul(w2,a1) + b2\n",
    "fnn = np.squeeze(np.matmul(w3,a2) + b3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "6544db2a-b955-4dd6-abb5-d0f956a28819",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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tH//fmVmZmrdunV67rnnXOvX1dUpObn5LqE5OTn60Y9+5PqCl6To6OhGddx1112NXpOfn69Ro0a57hcUFOjaa691fflL0p49e9S/f38VFRVp2bJlys3NdYWQ050ebBq+T0pKSqu3WUt1AEDA+OYbEzyysqT8fDMB9XQJCdLUqVJamjRqlBTmP5el6HBBpMEf6n79vnl5ea7TTFNSUvTiiy9q//79+vvf/67q6moVFhbq8ccfV2FhocLCwjRgwIBGr9+6dauGDh3qul9QUODxkMIvf/lLXXfddVq8eLH+/Oc/67HHHlNOTo42b96shIQEj/MhoqKiWqz76aef9vhlferUKe3cubPRiEh9fb1yc3N12223Nar1kUceafJ7J0+erLy8PIWHh2vEiBHN1uAMHKcrKCjQdddd16Zt1lwdAODXiorc4aOw0PM6PXqYUY/0dCklRQrxz9kYHS6ItOXwiF327NmjkpIS16GX4cOH6+WXX9b8+fMVFxennJwc1dTUKDU1VTt37lRdXZ1qamoUEREhSSoqKtKCBQu0ePFiSVJZWZn27dvX7Jf3gAED9PDDD+u+++5TXFyctm7dqrCwMJWXlyspKanRiEZr6m7uTJ7du3errq5OAwe6r/2zYsUKHT161BUcSktLtX///ia15ufn695771VYWJhqa2tVUVGhzp07e3yfzZs3a8aMGY0ec26DlJQUFRcXn3GbnakOAPArlmUmlTrDx65dnte74AIpI8OMfFxyidTMyLI/6XBBJBDk5OQoPDxcQ4YMkSTdcsstuv76613zLnJzcxUfH69+/fopISFBCQkJmjNnjmbNmqV9+/Zp1qxZ+uEPf6jp06dLMn/Zh4SENPprX5L++Mc/qkePHho9erRCQ0P1+uuvKz4+XhMmTJBlWYqNjdXMmTP161//Wl26dNGuXbu0bNkyvfjii83WHRoa6nE0QpK6desmh8OhL774Qtdcc40+++wz3XPPPYqKinLN8SgoKGjyO/bv36/jx49r+PDhiomJUVxcnO68807NmTNHlmVpzZo1mjp1qgYNGiTJjLJs2rRJBw8eVHR0tOLi4ly/d/DgwaqsrGzVNmupDgCwXX29tHWrCR7Z2dKBA57XGzDAPfLRr19AhI+GCCI2yM3N1ZAhQxT23TG6sLAw1xklzuedf6nHxcXp/fff13333afXXntNSUlJuv322xtNKC0oKNCgQYMUedqEo8rKSv3hD39QUVGRunTpookTJyorK0vx8fGSpA8//FCPPPKIpkyZIsuy1L9//0an9nqqe+DAgc2OVCQlJempp57ST3/6U3Xp0kVTp07VD3/4Q2VmZio0NLRRrQ0P/+Tl5alr166u+S1LlizRQw89pNGjRys8PFxjxozRj3/8Y9f6Tz/9tB555BG98MILmj17tp577jnX742IiFBERESrt1lLdQCAz9XVmXkezvDR3KTHoUNN8EhLk3r39mmJ7c1hWZZldxHNKSsrU1xcnEpLS5s0yyqp3KvsfU8ore9T6hrZz6YKEczYBwG0i4YNxlatkkpKmq4TEiKlpprgMXWq9F3vJn/V0vf36RgRAQDA106dktavN+Hjk08a9/ZwCguTxo41Ix+TJ0tdu/q8TF8giAAA4Avl5SZ0ZGdL69ZJDdoJuERGShMmmAmnEyeanh8dHEEEAABvaWuDsfHjpe/O9gsWBBEAANpTWxqMpaebuR9+1GDM1wgiAACcK2eDscxMc8qtJwHSYMzXCCIAALRVwwZjmZnS7t2e1wvABmO+RhABAKA16utNO3XnYZevvvK8XoA3GPM1gggAAM2pq5Py8tw9PpprMDZsmHvOR4A3GPM1gggAAA1VV0sbNpjwsXp1h2gw5s8IIgAAtLbB2LhxJnx04AZjvkYQQYsefPBB7dixQ0uWLLG7FK8Lps8KQO4GY1lZpsFYdXXTdaKiGjcYa+XVytF6nDtko8mTJ8vhcOjtt99u9Pgrr7yi7n4yzJefn3/Gq9G25+e4//77df3117exyvbRms8KIMAdOya99540a5Z0+eXSr39t5n40DCExMdLVV0vPPSd9/LE0b540bRohxEsYEbGJZVnKz89XUlKSFi5cqJ/85Ceu53JzczVy5Eivvn9tba06dTrzP39BQYHuuuuuZp9v78+xYcMGXX311W16zblybouCggLdfffdPn1vAD5w+LA50yU7u3UNxkaNklrx/0e0D0ZEbLJz506Vl5frV7/6lZYtW6aKigrXczk5OUpNTXXdP3DggG6++WbFx8crPj5eN910k44fPy5JWr58uaKiolTboG3wtm3b5HA4VFxcLEnat2+fHA6HFixYoMmTJysiIkKLFi2SJP3ud7/T0KFDFR0drR49eujOO+9UTU2N632PHj3a4ihBe32OmpoahYeHa926dXr88cflcDg0duxYjRs3Ti+88ILrd/z4xz+Ww+HQye+O3x48eFDh4eHatm2bJGnLli266qqrFBsbq549e+rBBx9UdYO/dJrbFqd/1pKSEl177bWaMGGCDh06dKZ/TgD+pqhIevNN6ac/la65xoxu5OY2DiE9e0o/+Yn0l79Iy5dLjz1m5oAQQnzKq0Hk1Vdf1bBhwxQbG6vY2FiNHz9ey5Yt8+ZbBoycnBxFRkbqZz/7mWJjY13bpaqqSoWFha6RhF27dik1NVUXXXSR1q9fr48//li7d+/WQw89JMkcThg8eHCj0Y38/Hydf/75SkxMdN2XpHnz5umJJ55QYWGhpk2bJsuyVFdXp9dee01bt27Vm2++qQULFuj11193vS4mJkYXXnih1z9HaGio1q5d63rfQ4cOacWKFeratavKy8slmSCzYsUKxcTEuALM/PnzlZ6erksuuUR5eXmaMGGCRo4cqdzcXL377rt6++23NW/evEbbxtO2yM/PV1xcnPr166fNmzdr9OjRSkpK0qpVq5SUlHQ2/8QAfMmypB07pNdek370I+mGG6SXXmra5fSCC6T/+i/p//5PWrJEevBBacQIupzayKuxr3fv3nrmmWfUv39/SdJbb72l73//+8rLy9PgwYO986YzZ0pHj3rnd7ekWzezY7dSbm6uhg0bpvDwcM2YMUMLFizQjTfeqE2bNqmmpsY1knDHHXfozjvv1JNPPul67cMPP+z6Ai8oKGgyYpGXl6eUlBTX/YKCAkVHR+tf//qX+vbt22jdhr+3T58+uuKKK7R9+3ZJ5ks7JSVFjhaa8bTX5wgJCdHBgwfVrVu3RrXHx8frxIkTkqSXXnpJN998s5YvX67jx4+rR48emj9/vt544w1J0u23366ZM2fq6aefliT1799ft99+uz744AM98cQTLW4L52d9++23dffdd+uZZ57RL37xi2Y/NwA/0JYGY87upjQY8zteDSLXXntto/u///3v9eqrr+qzzz7zXhA5erT5hjN+JCcnxzVacMMNN+iGG25QVVWVcnJylJCQoL59+2r//v3KzMzUunXr9Nxzz7leW1dXp+TkZEnmC/T0ORz5+fkaNWpUo/vXXXddkxCyf/9+/c///I9WrVqlr7/+WjU1NaqsrNTcuXNdrzvT5M32+hxS0wAlyTUicvLkSb3++utav3691q1bp+PHj2vRokWKiYnR9773PW3fvl05OTn629/+1uj14eHhqmpwqe3mtkV+fr42b96se+65R0uXLtWECRNa/NwAbNKwwVh2tvTtt57XGzbMBI/0dOn8831bI9rEZwfC6urq9K9//UsnT57U+PHjPa5TVVXV6EujrKys7W/UrdvZlnhu2vi+eXl5uummmyRJU6dOVXh4uFasWKHc3FyNGDFCkvnrPSEhQZ9//nmT10dFRenUqVPauXNno7BQX1+v3Nxc3Xbbba7HCgoKNGfOnEavLy4u1pgxY5SWlqbnn39e559/vurr6zVq1CjX78vPz9dVV13l9c/h5ByVaCg+Pl4HDhzQW2+9pfHjx2vAgAGKjY3V8ePH9fLLL+vee++Vw+FQYWGhwsLCNGDAgEav37p1q4YOHdritnC+94033qi///3vKvHUvAiAfZwNxjIzTYOx0tKm64SEmEmmzgZj553n8zJxdrweRDZv3qzx48ersrJSXbp00aJFi3TppZd6XHfu3LmNhu7PShsOj9hlz549KikpcY0kdOrUSddee60WLlyoLVu26PLLL5ckhYWFqby8XElJSYr2cNrYli1bVFdXp4EDB7oeW7FihY4ePer6Qi8rK9O+fftcocDpww8/VG1trd5++23XoZeXX35Z1dXVGj58uMrLy7V3794WR0Ta63M4bd68WTNmzGj0WNeuXVVYWKgXX3xRL7/8siQpNjZWa9euVUFBgZYuXSpJiomJUV1dnWpqahQRESFJKioq0oIFC7R48eIWt4Xzs951112aOHGifvKTn2jdunXeG7UDcGYVFY0bjDWYCO/SsMHYlClSXJzv68S5s7ysqqrK2rlzp7VhwwZrzpw5VmJiolVYWOhx3crKSqu0tNS1HDhwwJJklZaWNln3+Kk91nvbbraOn9rj7Y/Q7v75z39a4eHhVlVVleuxJUuWWF27drXCw8Otd955x7Isyzp69KjVrVs3a8aMGVZeXp61c+dOa9myZda9995rWZZlHTx40HI4HNaSJUssy7Ks9evXWxdeeKEVFRVl1dbWWpZlWWvWrLFCQ0OtU6dONaphyZIlVqdOnazFixdbO3bssJ577jkrMTHROv/8812v69Spk1VZWen1z+HUp08f64EHHrC+/vprq6SkxLIsy5o/f77VpUsXa8iQIa71brrpJis6OtqaPXu2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jliSrNWrVze7Dvt8+2vNdmef9474+Hjr9ddf9/icXfu634yIVFdXKycnR9OmTWv0+LRp07Ru3boWXztixAglJSUpIyND2dnZ3iwz6K1fv77Jv9GVV16pjRs3qqamxqaqggf7evsqLS2VJCUkJDS7Dvt8+2vNdndin28fdXV1euedd3Ty5EmNHz/e4zp27et+E0SKi4tVV1enHj16NHq8R48eOnz4sMfXJCUlaf78+Vq4cKHee+89DRw4UBkZGVqzZo0vSg5Khw8f9vhvVFtbq+LiYpuq6vjY19ufZVmaPXu2Jk2apCFDhjS7Hvt8+2rtdmefbx+bN29Wly5dFBERoTvuuEOLFi3SpZde6nFdu/Z1v7v6rsPhaHTfsqwmjzkNHDhQAwcOdN0fP368Dhw4oGeffVaTJ0/2ap3BzNO/kafH0X7Y19vfPffco02bNmnt2rVnXJd9vv20druzz7ePgQMHKj8/XyUlJVq4cKFuueUWrV69utkwYse+7jcjIomJiQoNDW0y+nHkyJEmCa0l48aN086dO9u7PHynZ8+eHv+NOnXqpG7dutlUVXBiXz97s2bN0r///W9lZ2erd+/eLa7LPt9+2rLdPWGfb7vw8HD1799fo0aN0ty5c5WSkqIXX3zR47p27et+E0TCw8OVmpqqlStXNnp85cqVmjBhQqt/T15enpKSktq7PHxn/PjxTf6NPvroI40aNUphYWE2VRWc2NfbzrIs3XPPPXrvvfeUlZWlfv36nfE17PPn7my2uyfs8+fOsixVVVV5fM62fd2rU2Hb6J133rHCwsKsN954w9q6dat1//33W9HR0da+ffssy7KsOXPmWDNnznSt/8ILL1iLFi2yduzYYW3ZssWaM2eOJclauHChXR8h4JSXl1t5eXlWXl6eJcl6/vnnrby8PGv//v2WZTXd5nv27LE6d+5sPfDAA9bWrVutN954wwoLC7MWLFhg10cISG3d7uzr7ePOO++04uLirFWrVlmHDh1yLRUVFa512Ofb39lsd/b5c/foo49aa9assfbu3Wtt2rTJeuyxx6yQkBDro48+sizLf/Z1vwoilmVZL7/8stWnTx8rPDzcGjlyZKPTu2655RZrypQprvvz5s2zLrroIisyMtKKj4+3Jk2aZC1dutSGqgOX8xS505dbbrnFsqym29yyLGvVqlXWiBEjrPDwcKtv377Wq6++6vvCA1xbtzv7evvwtM0lWX/9619d67DPt7+z2e7s8+fuv//7v13fp+edd56VkZHhCiGW5T/7usOyvpuJAgAA4GN+M0cEAAAEH4IIAACwDUEEAADYhiACAABsQxABAAC2IYgAAADbEEQAAIBtCCIAAMA2BBEAAGAbgggAALANQQQAANiGIAIAAGzz/wHEIKspCfWGnQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()     \n",
    "plt.plot(X_,Y,alpha=0.8,linewidth=2,linestyle='-',color='blue',label=r'$Morse$ $Function$')\n",
    "plt.plot(X_,fnn,alpha=0.8,linewidth=2,linestyle='-',color='red',label=r'$Neural$ $Network$')\n",
    "plt.legend(loc='best',edgecolor='yellowgreen')\n",
    "plt.show() # plt.savefig('Morse.png')\n",
    "plt.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "5070d3fb-1724-43c5-9ff5-d53bdc85b79b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 0 3.658228\n",
      "epoch 1 3.658228\n",
      "epoch 2 3.658228\n",
      "epoch 3 3.658228\n",
      "epoch 4 3.658228\n",
      "epoch 5 3.658228\n",
      "epoch 6 3.658228\n",
      "epoch 7 3.658228\n",
      "epoch 8 3.658228\n",
      "epoch 9 3.658228\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(10):\n",
    "    alpha = 0.0001\n",
    "    a1  = np.matmul(w1,X)  + b1\n",
    "    # print(a1.shape)\n",
    "    a2  = np.matmul(w2,a1) + b2\n",
    "    f   = np.matmul(w3,a2) + b3\n",
    "    f_  = np.squeeze(f)\n",
    "    Loss = np.sum(np.square(f -Y_))\n",
    "    print('epoch {:d} {:f}'.format(epoch,Loss))\n",
    "    \n",
    "    dLdf = 2*np.sum(f-Y_)\n",
    "    n_b3 = b3 - alpha*dLdf\n",
    "    # print('f: ',f.shape)\n",
    "    # print('a2: ',a2.shape)\n",
    "    # print('w3: ',w3.shape)\n",
    "    # print('n_b3: ',n_b3.shape)\n",
    "    \n",
    "    da3  = 2*(f-Y_)\n",
    "    \n",
    "    dw3   = np.sum(np.matmul(da3,a2.transpose([0,2,1])),axis=0)\n",
    "    n_w3  = w3 - alpha*dw3\n",
    "\n",
    "    da2  = np.matmul(w3.transpose(),da3)\n",
    "    db2  = np.sum(da2,axis=0)\n",
    "    n_b2 = b2 - alpha*db2\n",
    "    \n",
    "    dw2  = np.sum(np.matmul(da2,a2.transpose([0,2,1])),axis=0)\n",
    "    n_w2 = w2 - alpha*dw2\n",
    "    # print('db2:',dLdb2.shape)\n",
    "    \n",
    "    da1  = np.matmul(w2.transpose(),da2)\n",
    "    db1  = np.sum(da1,axis=0)\n",
    "    n_b1 = b1 - alpha*db1\n",
    "    dw1  = np.sum(np.matmul(da1,X.transpose([0,2,1])),axis=0)\n",
    "    n_w1 = w1 - alpha*dw1 \n",
    "\n",
    "    b3   = n_b3\n",
    "    w3   = n_w3\n",
    "    b2   = n_b2\n",
    "    w2   = n_w2\n",
    "    b1   = n_b1\n",
    "    w1   = n_w1\n",
    "    # print(n_b3.shape,n_w3.shape,n_b2.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "b8a87751-2e61-4c7d-9aaf-5b85e843ecd2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(50,)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()     \n",
    "plt.plot(X_,Y,alpha=0.8,linewidth=2,linestyle='-',color='blue',label=r'$Morse$ $Function$')\n",
    "plt.plot(X_,f_,alpha=0.8,linewidth=2,linestyle='-',color='red',label=r'$Neural$ $Network$')\n",
    "plt.legend(loc='best',edgecolor='yellowgreen')\n",
    "plt.show() # plt.savefig('Morse.png')\n",
    "plt.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
